package com.quectel.constant.core.parking;

import lombok.AllArgsConstructor;
import lombok.Getter;

public class ParkingOrderConstants {

    public static final String QUERY_BASE_ORDER_NAME = "onlyBaseOrder";

    /**
     * 压线触发间隔分钟数限制（压线支付，压线时间距离当前时间间隔限制）
     */
    public static final Integer TRIGGER_MINUTES_SPACE_LIMIT = 10;

    @AllArgsConstructor
    public static enum OrderPayStatusEnum {

        /**
         * 未缴费
         */
        NO_PAY((byte) 0),

        /**
         * 已缴费
         */
        PAY_SUCCESS((byte) 1),

        /**
         * 已退款
         */
        IS_REFUND((byte) 2);

        @Getter
        private final Byte payStatus;
    }

    @AllArgsConstructor
    public static enum PayCardEnum {

        /**
         * 未购卡
         */
        NO_CARD((byte) 0),

        /**
         * 购卡
         */
        PAY_CARD((byte) 1);

        @Getter
        private final Byte isPayCard;
    }

    @AllArgsConstructor
    public static enum AdvanceEnum {

        /**
         * 非提前支付（压线后支付）
         */
        NO_ADVANCE((byte) 0),

        /**
         * 提前支付
         */
        PAY_ADVANCE((byte) 1);

        @Getter
        private final Byte advanceType;
    }

    @AllArgsConstructor
    public static enum OrderInvoiceStatusEnum {

        /**
         * 未开票
         */
        NOT_INVOICED((byte) 0),

        /**
         * 开票中
         */
        INVOICING((byte) 1),

        /**
         * 已开票
         */
        INVOICED((byte)2),

        /**
         * 已红冲
         */
        FLUSHED_RED((byte)3),

        /**
         * 已关闭
         */
        CLOSED((byte) 4);
        @Getter
        private final Byte invoiceStatus;
    }

    @AllArgsConstructor
    public static enum GuardOpenStatusEnum {

        /**
         * 未被打开过
         */
        NEVER_OPENED((byte) 0),

        /**
         * 打开过
         */
        OPENED((byte) 1);

        @Getter
        private final Byte openStatus;
    }

    @AllArgsConstructor
    public static enum OrderStatusEnum {

        /**
         * 进行中
         */
        IS_PROGRESS((byte) 1),

        /**
         * 完成
         */
        FINISHED((byte) 2),

        /**
         * 异常
         */
        ABNORMAL((byte) 3);

        @Getter
        private final Byte status;
    }

    @AllArgsConstructor
    public static enum PayTypeEnum {

        /**
         * 支付宝
         */
        ALI_PAY((byte) 1),

        /**
         * 微信
         */
        WX_PAY((byte) 2),

        /**
         * 小程序
         */
        MP_PAY((byte) 3),

        /**
         * 月卡
         */
        CARD_PAY((byte)9);

        @Getter
        private final Byte payType;
    }

    public static final String INVOICE_STATUSES_QUERY_NAME = "invoiceStatuses";

}
